热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

峰值|可能会_Linux监控详解

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Linux监控详解相关的知识,希望对你有一定的参考价值。什么是监控?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Linux监控详解相关的知识,希望对你有一定的参考价值。



什么是监控?

监控===监测+控制
生活中的监控:事故追责
运维中的监控:事后追责,事前预警,性能分析,实时报警

为什么要使用监控

监控是整个产品周期中最重要的一环,及时预警减少故障避免影响扩大,根据历史数据可以追溯问题根源,并且分析监控数据,可以找出用户体验优化方案。

随着用户的增多,服务随时可能会被系统oom(out of memory内存溢出)
后果:kill -9 mysql
如何判断?,web服务是因为用户访问过多,达到了瓶颈? 还是程序代码bug导致的,内存过多?
上线一个新网站:压力测试 2000并发,oom(out of memeory)

监控的类型

按照层次划分可简单分为:
应用层:nginx,mysql,java
运行层:Windows,linux
硬件层:内存,cpu,磁盘,网络

常见的监控方法

Linux常用监控命令

下列命令多用来监控网络,cpu,内存,硬盘

1.top #系统时间 登录用户 负载 进程 cpu 内存 swap 进程详细信息
2.htop(eple) # 系统时间 登录用户 负载 进程 cpu 内存 swap 进程详细信息 支持鼠标 树状 快捷键
3.uptime #当前系统运行时间、登录用户数、负载数
4.free # 监控内存
5.vmstat # 进程、虚存、页面交换空间及CPU
5.iostat # 磁盘I/O统计
6.df # 查看硬盘使用 -h block -i inode
7.iftop # 流量监控工具
8.nethogs # 查看进程占用的网络带宽
9.iotop # 进程占用的硬盘I/O

脚本

不使用工具的情况下,可以使用脚本+定时任务完成监控操作
缺点:效率低,无法集中报警,无法分析历史数据

如:监控内存的脚本
[root@k8s ~]# cat mem_alter.sh
#!/bin/bash
MEM=`free -m|awk 'NR==2print $NF'`
if [ $MEM -lt 100 ];then
echo "web服务器 192.168.15.1 可用内存不足,当前可用内存
$MEM"
| mail -s "web服务器内存不足" yzl_long@qq.com
fi
防止dos攻击的脚本(定义一个异常值,此处为20)
#!/bin/bash
while true
do
awk 'print $1' /uer/local/nginx/logs/access.log |grep -v "^$" |sort |uniq -c >tmp.log
exce < tmp.log
while read line
do
ip &#61; &#96;echo $line |awk &#39;print 2&#39;&#96;
count &#61;&#96;echo $line |awk &#39;print 1&#39;&#96;
if [$count -gt 20] && [&#96;iptables -n -L |grep "$ip" |wc -l &#96; -lt 1]
then
iptables -I INPUT -s $ip -j DROP
echo "iptables is open make $line is block " >> blockip.log
fi
done
sleep 3
done

监控工具


监控流程


监控指标
监控项目监控内容
主机内存&#xff0c;磁盘&#xff08;使用空间/剩余空间&#xff09;&#xff0c;
网卡ping的响应时间&#xff0c;数据包的收发成功率&#xff0c;网卡的流入流出量和错误的数据包数量
io_wait反映cpu是否空转
code查看URL访问过程中的返回码&#xff0c;由此了解服务器在特定时间的状态
uv反映服务的热度
pv反映服务的用户满意度
qps每秒查询率(Query Per Second) ,每秒的响应请求数&#xff0c;也即是最大吞吐能力。
应用程序服务状态&#xff0c;端口和内存使用率&#xff0c;cpu使用率&#xff0c;请求数量&#xff0c;并发访问请求
数据库指定数据库中的表空间&#xff0c;数据库的游标数&#xff0c;会话数&#xff0c;事务数
日志错误日志&#xff0c;特定字符串匹配
磁盘使用量根据磁盘使用量&#xff0c;了解磁盘使用情况

拓展内容&#xff1a;

QPS:
每秒查询率(Query Per Second) ,每秒的响应请求数&#xff0c;也即是最大吞吐能力。
QPS &#61; req/sec &#61; 请求数/秒
QPS统计方式 [一般使用 http_load 进行统计]
QPS &#61; 总请求数 / ( 进程总数 * 请求时间 )
QPS: 单个进程每秒请求服务器的成功次数
峰值QPS:
原理&#xff1a;每天80%的访问集中在20%的时间里&#xff0c;这20%时间叫做峰值时间
公式&#xff1a;( 总PV数 * 80% ) / ( 每天秒数 * 20% ) &#61; 峰值时间每秒请求数(QPS)
PV:
访问量即Page View, 即页面浏览量或点击量&#xff0c;用户每次刷新即被计算一次
单台服务器每天PV计算
公式1&#xff1a;每天总PV &#61; QPS * 3600 * 6
公式2&#xff1a;每天总PV &#61; QPS * 3600 * 8
UV:
独立访客即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次
服务器数量&#xff1a;
机器&#xff1a;峰值时间每秒QPS / 单台机器的QPS &#61; 需要的机器
机器&#xff1a;clie( 每天总PV / 单台服务器每天总PV )
并发数&#xff1a;
并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量
吐吞量&#xff1a;
吞吐量是指系统在单位时间内处理请求的数量
响应时间&#xff08;RT):
响应时间是指系统对请求作出响应的时间
例子&#xff1a;
每天500w PV 的在单台机器上&#xff0c;这台机器需要多少QPS&#xff1f;
答&#xff1a;( 5000000 * 0.8 ) / (86400 * 0.2 ) &#61; 231 (QPS)
如果一台机器的QPS是90&#xff0c;需要几台机器来支持&#xff1f;
答&#xff1a;231 / 90 &#61; 3

推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
author-avatar
每张照片都有它的心情和故事
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有